﻿// <copyright file="IWeir.cs" company="City of Portland, BES-ASM">
// </copyright>
// <summary>IWeir interface</summary>

namespace BESASM.EMGAATS.BusinessClasses
{
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;

  /// <summary>
  /// Interface for <see cref="Weir"/>
  /// </summary>
  public interface IWeir : IEntity
  {
    /// <summary>
    /// Gets or sets the name of the weir
    /// </summary>
    string WeirName { get; set; }

    /// <summary>
    /// Gets or sets the upstream node of the weir
    /// </summary>
    INode USNode { get; set; }

    /// <summary>
    /// Gets or sets the downstream node of the weir
    /// </summary>
    INode DSNode { get; set; }

    /// <summary>
    /// Gets or sets the downstream link of the weir
    /// </summary>
    ILink ToLink { get; set; }

    /// <summary>
    /// Gets or sets the type of weir; <see cref="WeirType"/>
    /// </summary>
    WeirType WeirType { get; set; }

    /// <summary>
    /// Gets or sets the top (crown) elevation of the weir, in feet
    /// </summary>
    double TopElevFt { get; set; }

    /// <summary>
    /// Gets or sets the crest elevation of the weir, in feet
    /// </summary>
    double CrestElevFt { get; set; }

    /// <summary>
    /// Gets or sets the length of the weir, in feet
    /// </summary>
    double LengthFt { get; set; }

    /// <summary>
    /// Gets or sets the coefficient of the weir
    /// </summary>
    double Coefficient { get; set; }

    /// <summary>
    /// Gets or sets a value indicating whether the weir has a flap gate
    /// </summary>
    bool HasFlapGate { get; set; }

    /// <summary>
    /// Gets a value indicating whether weir has a ToLink specified
    /// </summary>
    bool HasToLink { get; }
  }
}